<?php
class ControllerFactory {
    protected $container;
    
    public function __construct(Container $container) {
        $this->container = $container;
        
        // 确保APP_ROOT常量已定义
        if (!defined('APP_ROOT')) {
            define('APP_ROOT', dirname(__DIR__));
        }
    }
    
    /**
     * 创建控制器实例
     * 
     * @param string $controllerName 控制器名称
     * @return Controller 控制器实例
     * @throws Exception 如果控制器不存在
     */
    public function create($controllerName) {
        $controllerClass = $controllerName . 'Controller';
        $controllerFile = APP_ROOT . '/app/controllers/' . $controllerClass . '.php';
        
        if (!file_exists($controllerFile)) {
            throw new Exception("控制器文件 {$controllerFile} 不存在");
        }
        
        // 如果控制器类不存在，则包含控制器文件
        if (!class_exists($controllerClass)) {
            require_once $controllerFile;
        }
        
        // 通过容器创建控制器实例
        return new $controllerClass($this->container);
    }
}
?>